package com.pro.common.api.enums.init;

import com.pro.framework.api.enums.EnumToDbEnum;
import com.pro.framework.api.enums.IEnumStr;
import com.pro.framework.api.enums.IEnumToDbEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.math.BigDecimal;
import java.util.Map;

// 二字国家代码 ISO 3166-1 alpha-2 标准版本
@Schema(description = "国家")
@Getter
@AllArgsConstructor
@EnumToDbEnum(entityClass = "com.pro.common.service.sitecontent.model.db.Country")
public enum EnumCountry2 {
    CN(null, "China", "中国", "zh", "Simplified Chinese", "简体中文", "86", "CN", "CNY", "¥", BigDecimal.valueOf(0.1471), "Asia/Shanghai", 100, true, true, null),
    US(null, "United States", "美国", "en", "English", "英语", "1", "US", "USD", "$", BigDecimal.valueOf(1.0000), "America/New_York", 110, true, true, null),
    GB(null, "United Kingdom", "英国", "en", "English", "英语", "44", "GB", "GBP", "£", BigDecimal.valueOf(1.27), "Europe/London", 120, true, true, null),
    TW(null, "Taiwan", "中国台湾", "zh-TW", "Traditional Chinese", "繁体中文", "886", "TW", "TWD", "NT$", BigDecimal.valueOf(0.0313), "Asia/Taipei", 130, true, true, null),
    PT(null, "Portugal", "葡萄牙", "pt", "Portuguese", "葡萄牙语", "351", "PT", "EUR", "€", BigDecimal.valueOf(1.06), "Europe/Lisbon", 140, true, true, null),
    SE(null, "Sweden", "瑞典", "sv", "Swedish", "瑞典语", "46", "SE", "SEK", "kr", BigDecimal.valueOf(0.091), "Europe/Stockholm", 150, true, true, null),
    CH(null, "Switzerland", "瑞士", "de", "German", "德语", "41", "CH", "CHF", "Fr", BigDecimal.valueOf(1.10), "Europe/Zurich", 160, true, true, null),
    GR(null, "Greece", "希腊", "el", "Greek", "希腊语", "30", "GR", "EUR", "€", BigDecimal.valueOf(1.06), "Europe/Athens", 170, true, true, null),
    IE(null, "Ireland", "爱尔兰", "en", "English", "英语", "353", "IE", "EUR", "€", BigDecimal.valueOf(1.06), "Europe/Dublin", 180, true, true, null),
    CY(null, "Cyprus", "塞浦路斯", "el", "Greek", "希腊语", "357", "CY", "EUR", "€", BigDecimal.valueOf(1.06), "Asia/Nicosia", 190, true, true, null),
    SA(null, "Saudi Arabia", "沙特阿拉伯", "ar", "Arabic", "阿拉伯语", "966", "SA", "SAR", "﷼", BigDecimal.valueOf(0.27), "Asia/Riyadh", 200, true, true, null),
    KW(null, "Kuwait", "科威特", "ar", "Arabic", "阿拉伯语", "965", "KW", "KWD", "KD", BigDecimal.valueOf(3.25), "Asia/Kuwait", 210, true, true, null),
    NO(null, "Norway", "挪威", "no", "Norwegian", "挪威语", "47", "NO", "NOK", "kr", BigDecimal.valueOf(0.092), "Europe/Oslo", 220, true, true, null),
    CL(null, "Chile", "智利", "es", "Spanish", "西班牙语", "56", "CL", "CLP", "$", BigDecimal.valueOf(0.0011), "America/Santiago", 230, true, true, null),
    PH(null, "Philippines", "菲律宾", "en", "English", "英语", "63", "PH", "PHP", "₱", BigDecimal.valueOf(0.017), "Asia/Manila", 240, true, true, null),
    QA(null, "Qatar", "卡塔尔", "ar", "Arabic", "阿拉伯语", "974", "QA", "QAR", "﷼", BigDecimal.valueOf(0.27), "Asia/Qatar", 250, true, true, null),
    JO(null, "Jordan", "约旦", "ar", "Arabic", "阿拉伯语", "962", "JO", "JOD", "د.ا", BigDecimal.valueOf(1.41), "Asia/Amman", 260, true, true, null),
    OM(null, "Oman", "阿曼", "ar", "Arabic", "阿拉伯语", "968", "OM", "OMR", "﷼", BigDecimal.valueOf(2.60), "Asia/Muscat", 270, true, true, null),
    BH(null, "Bahrain", "巴林", "ar", "Arabic", "阿拉伯语", "973", "BH", "BHD", "ب.د", BigDecimal.valueOf(2.65), "Asia/Bahrain", 280, true, true, null),
    IL(null, "Israel", "以色列", "he", "Hebrew", "希伯来语", "972", "IL", "ILS", "₪", BigDecimal.valueOf(0.26), "Asia/Jerusalem", 290, true, true, null),
    ZA(null, "South Africa", "南非", "en", "English", "英语", "27", "ZA", "ZAR", "R", BigDecimal.valueOf(0.055), "Africa/Johannesburg", 300, true, true, null),
    BG(null, "Bulgaria", "保加利亚", "bg", "Bulgarian", "保加利亚语", "359", "BG", "BGN", "лв", BigDecimal.valueOf(0.55), "Europe/Sofia", 310, true, true, null),
    CZ(null, "Czech Republic", "捷克", "cs", "Czech", "捷克语", "420", "CZ", "CZK", "Kč", BigDecimal.valueOf(0.043), "Europe/Prague", 320, true, true, null),
    HU(null, "Hungary", "匈牙利", "hu", "Hungarian", "匈牙利语", "36", "HU", "HUF", "Ft", BigDecimal.valueOf(0.0028), "Europe/Budapest", 330, true, true, null),
    DK(null, "Denmark", "丹麦", "da", "Danish", "丹麦语", "45", "DK", "DKK", "kr", BigDecimal.valueOf(0.14), "Europe/Copenhagen", 340, true, true, null),
    RO(null, "Romania", "罗马尼亚", "ro", "Romanian", "罗马尼亚语", "40", "RO", "RON", "lei", BigDecimal.valueOf(0.22), "Europe/Bucharest", 350, true, true, null),
    BE(null, "Belgium", "比利时", "nl", "Dutch", "荷兰语", "32", "BE", "EUR", "€", BigDecimal.valueOf(1.06), "Europe/Brussels", 360, true, true, null),
    AT(null, "Austria", "奥地利", "de", "German", "德语", "43", "AT", "EUR", "€", BigDecimal.valueOf(1.06), "Europe/Vienna", 370, true, true, null),
    FI(null, "Finland", "芬兰", "fi", "Finnish", "芬兰语", "358", "FI", "EUR", "€", BigDecimal.valueOf(1.06), "Europe/Helsinki", 380, true, true, null),
    SK(null, "Slovakia", "斯洛伐克", "sk", "Slovak", "斯洛伐克语", "421", "SK", "EUR", "€", BigDecimal.valueOf(1.06), "Europe/Bratislava", 390, true, true, null),
    HR(null, "Croatia", "克罗地亚", "hr", "Croatian", "克罗地亚语", "385", "HR", "EUR", "€", BigDecimal.valueOf(1.06), "Europe/Zagreb", 400, true, true, null),
    SI(null, "Slovenia", "斯洛文尼亚", "sl", "Slovenian", "斯洛文尼亚语", "386", "SI", "EUR", "€", BigDecimal.valueOf(1.06), "Europe/Ljubljana", 410, true, true, null),
    LT(null, "Lithuania", "立陶宛", "lt", "Lithuanian", "立陶宛语", "370", "LT", "EUR", "€", BigDecimal.valueOf(1.06), "Europe/Vilnius", 420, true, true, null),
    EE(null, "Estonia", "爱沙尼亚", "et", "Estonian", "爱沙尼亚语", "372", "EE", "EUR", "€", BigDecimal.valueOf(1.06), "Europe/Tallinn", 430, true, true, null),
    LV(null, "Latvia", "拉脱维亚", "lv", "Latvian", "拉脱维亚语", "371", "LV", "EUR", "€", BigDecimal.valueOf(1.06), "Europe/Riga", 440, true, true, null),
    MT(null, "Malta", "马耳他", "mt", "Maltese", "马耳他语", "356", "MT", "EUR", "€", BigDecimal.valueOf(1.06), "Europe/Malta", 450, true, true, null),
    LU(null, "Luxembourg", "卢森堡", "fr", "French", "法语", "352", "LU", "EUR", "€", BigDecimal.valueOf(1.06), "Europe/Luxembourg", 460, true, true, null),
    PE(null, "Peru", "秘鲁", "es", "Spanish", "西班牙语", "51", "PE", "PEN", "S/", BigDecimal.valueOf(0.27), "America/Lima", 470, true, true, null),
    CO(null, "Colombia", "哥伦比亚", "es", "Spanish", "西班牙语", "57", "CO", "COP", "$", BigDecimal.valueOf(0.00025), "America/Bogota", 480, true, true, null),
    GE(null, "Georgia", "格鲁吉亚", "ka", "Georgian", "格鲁吉亚语", "995", "GE", "GEL", "₾", BigDecimal.valueOf(0.37), "Asia/Tbilisi", 490, true, true, null),
    EC(null, "Ecuador", "厄瓜多尔", "es", "Spanish", "西班牙语", "593", "EC", "USD", "$", BigDecimal.valueOf(1.00), "America/Guayaquil", 500, true, true, null),
    CA(null, "Canada", "加拿大", "en", "English", "英语", "1", "CA", "CAD", "$", BigDecimal.valueOf(0.73), "America/Toronto", 510, true, true, null),
    AU(null, "Australia", "澳大利亚", "en", "English", "英语", "61", "AU", "AUD", "$", BigDecimal.valueOf(0.66), "Australia/Sydney", 520, true, true, null),
    NZ(null, "New Zealand", "新西兰", "en", "English", "英语", "64", "NZ", "NZD", "$", BigDecimal.valueOf(0.60), "Pacific/Auckland", 530, true, true, null),
    DE(null, "Germany", "德国", "de", "German", "德语", "49", "DE", "EUR", "€", BigDecimal.valueOf(1.06), "Europe/Berlin", 540, true, true, null),
    FR(null, "France", "法国", "fr", "French", "法语", "33", "FR", "EUR", "€", BigDecimal.valueOf(1.06), "Europe/Paris", 550, true, true, null),
    IT(null, "Italy", "意大利", "it", "Italian", "意大利语", "39", "IT", "EUR", "€", BigDecimal.valueOf(1.06), "Europe/Rome", 560, true, true, null),
    NL(null, "Netherlands", "荷兰", "nl", "Dutch", "荷兰语", "31", "NL", "EUR", "€", BigDecimal.valueOf(1.06), "Europe/Amsterdam", 570, true, true, null),
    ES(null, "Spain", "西班牙", "es", "Spanish", "西班牙语", "34", "ES", "EUR", "€", BigDecimal.valueOf(1.06), "Europe/Madrid", 580, true, true, null),
    JP(null, "Japan", "日本", "ja", "Japanese", "日语", "81", "JP", "JPY", "¥", BigDecimal.valueOf(0.0067), "Asia/Tokyo", 590, true, true, null),
    KR(null, "South Korea", "韩国", "ko", "Korean", "韩语", "82", "KR", "KRW", "₩", BigDecimal.valueOf(0.00073), "Asia/Seoul", 600, true, true, null),
    SG(null, "Singapore", "新加坡", "en", "English", "英语", "65", "SG", "SGD", "$", BigDecimal.valueOf(0.73), "Asia/Singapore", 610, true, true, null),
    MY(null, "Malaysia", "马来西亚", "ms", "Malay", "马来语", "60", "MY", "MYR", "RM", BigDecimal.valueOf(0.21), "Asia/Kuala_Lumpur", 620, true, true, null),
    TH(null, "Thailand", "泰国", "th", "Thai", "泰语", "66", "TH", "THB", "฿", BigDecimal.valueOf(0.027), "Asia/Bangkok", 630, true, true, null),
    VN(null, "Vietnam", "越南", "vi", "Vietnamese", "越南语", "84", "VN", "VND", "₫", BigDecimal.valueOf(0.000039), "Asia/Ho_Chi_Minh", 640, true, true, null),
    MX(null, "Mexico", "墨西哥", "es", "Spanish", "西班牙语", "52", "MX", "MXN", "$", BigDecimal.valueOf(0.056), "America/Mexico_City", 650, true, true, null),
    BR(null, "Brazil", "巴西", "pt", "Portuguese", "葡萄牙语", "55", "BR", "BRL", "R$", BigDecimal.valueOf(0.19), "America/Sao_Paulo", 660, true, true, null),
    AE(null, "United Arab Emirates", "阿联酋", "ar", "Arabic", "阿拉伯语", "971", "AE", "AED", "د.إ", BigDecimal.valueOf(0.27), "Asia/Dubai", 670, true, true, null),
    PL(null, "Poland", "波兰", "pl", "Polish", "波兰语", "48", "PL", "PLN", "zł", BigDecimal.valueOf(0.25), "Europe/Warsaw", 680, true, true, null),
    IN(null, "India", "印度", "hi", "Hindi", "印地语", "91", "IN", "INR", "₹", BigDecimal.valueOf(0.012), "Asia/Kolkata", 690, true, true, null),
    ID(null, "Indonesia", "印尼", "id", "Indonesian", "印尼语", "62", "ID", "IDR", "Rp", BigDecimal.valueOf(0.000063), "Asia/Jakarta", 700, true, true, null),
    HK(null, "Hong Kong", "中国香港", "zh-HK", "Chinese", "中文", "852", "HK", "HKD", "HK$", BigDecimal.valueOf(0.13), "Asia/Hong_Kong", 710, true, true, null),
    TR(null, "Turkey", "土耳其", "tr", "Turkish", "土耳其语", "90", "TR", "TRY", "₺", BigDecimal.valueOf(0.030), "Europe/Istanbul", 720, true, true, null),
    AR(null, "Argentina", "阿根廷", "es", "Spanish", "西班牙语", "54", "AR", "ARS", "$", BigDecimal.valueOf(0.0011), "America/Argentina/Buenos_Aires", 730, true, true, null),
    EG(null, "Egypt", "埃及", "ar", "Arabic", "阿拉伯语", "20", "EG", "EGP", "£", BigDecimal.valueOf(0.021), "Africa/Cairo", 740, true, true, null),
    MA(null, "Morocco", "摩洛哥", "ar", "Arabic", "阿拉伯语", "212", "MA", "MAD", "د.م.", BigDecimal.valueOf(0.097), "Africa/Casablanca", 750, true, true, null),
    RU(null, "Russia", "俄罗斯", "ru", "Russian", "俄语", "7", "RU", "RUB", "₽", BigDecimal.valueOf(0.011), "Europe/Moscow", 760, true, true, null),
    PK(null, "Pakistan", "巴基斯坦", "ur", "Urdu", "乌尔都语", "92", "PK", "PKR", "Rs", BigDecimal.valueOf(0.0036), "Asia/Karachi", 770, true, true, null),
    LK(null, "Sri Lanka", "斯里兰卡", "si", "Sinhala", "僧伽罗语", "94", "LK", "LKR", "Rs", BigDecimal.valueOf(0.0033), "Asia/Colombo", 780, true, true, null);


    ;
    private final String icon;
    private final String countryName;
    private final String cname;
    private final String langCode;
    private final String langName;
    private final String langCnName;
    private final String phoneCode;
    private final String countryCode;
    private final String currencyCode;
    private final String currencySymbol;
    private final BigDecimal exchangeRate;
    private final String zoneCode;
    private final Integer sort;
    private final Boolean enabled;
    private final Boolean showAdmin;
    private final String forceChangeTime;

}
//CHN 中国
//USA 美国
//GBR 英国
//TWN 中国台湾
//PRT 葡萄牙
//SWE 瑞典
//CHE 瑞士
//GRC 希腊
//IRL 爱尔兰
//CYP 塞浦路斯
//SAU 沙特
//KWT 科威特
//NOR 挪威
//CHL 智利
//PHL 菲律宾
//QAT 卡塔尔
//JOR 约旦
//OMN 阿曼
//BHR 巴林
//ISR 以色列
//ZAF 南非
//BGR 保加利亚
//CZE 捷克
//HUN 匈牙利
//DNK 丹麦
//ROU 罗马尼亚
//BEL 比利时
//AUT 奥地利
//FIN 芬兰
//SVK 斯洛伐克
//HRV 克罗地亚
//SVN 斯洛文尼亚
//LTU 立陶宛
//EST 爱沙尼亚
//LVA 拉脱维亚
//MLT 马耳他
//LUX 卢森堡
//PER 秘鲁
//COL 哥伦比亚
//GEO 格鲁吉亚
//ECU 厄瓜多尔
//CAN 加拿大
//AUS 澳大利亚
//NZL 新西兰
//DEU 德国
//FRA 法国
//ITA 意大利
//NLD 荷兰
//ESP 西班牙
//JPN 日本
//KOR 韩国
//SGP 新加坡
//MYS 马来西亚
//THA 泰国
//VNM 越南
//MEX 墨西哥
//BRA 巴西
//ARE 阿拉伯联合酋长国
//POL 波兰
//IND 印度
//IDN 印度尼西亚
//HKG 中国香港
//TUR 土耳其
//ARG 阿根廷
//EGY 埃及
//MAR 摩洛哥
//RUS 俄罗斯
//PAK 巴基斯坦
//LKA 斯里兰卡